class Solution {
    public:
        int wiggleMaxLength(vector<int>& nums) {
            int n = nums.size();
            vector<int> f(n); //以i位置为结尾的最长子序列长度，且最后一个位置呈现上升趋势
            vector<int> g(n);//以i位置为结尾的最长子序列长度，且最后一个位置呈现下降趋势
            g[0] = f[0] = 1;
            int ret = 1;
            for(int i = 1 ; i < n ; i++){
                for(int j = i-1 ; j >=0 ; j--){
                    if(nums[j] < nums[i]){
                        f[i] = max(g[j]+1,f[i]);
                        
                    }else if(nums[j] > nums[i]){
                        g[i] = max(f[j]+1,g[i]);
                       
                    }
                }
                ret = max({ret,g[i],f[i]});
            }
            return ret;
        }
    };